import axios from "axios";
import { ElMessage } from "element-plus";
import config from "@/config";

const service = axios.create({
  baseURL: config.baseApi,
});

// 添加请求拦截器
service.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器
service.interceptors.response.use((res) => {
  const { code, data, msg } = res.data;
  if (code == 200) {
    return data;
  } else {
    const ERROE_NETEORK = "服务器错误，请联系管理员";
    ElMessage.error(msg || ERROE_NETEORK);
    return Promise.reject(msg || ERROE_NETEORK);
  }
});

function request(options) {
  options.method = options.method || "get";

  //统一处理请求参数使用data接收
  if (options.method.toLowerCase() == "get") {
    options.params = options.data;
  }
  // 判断是否开启了mock
  let isMock = config.mock;
  // 是否开启了单个api的mock
  if (typeof options.mock !== undefined) {
    isMock = options.mock;
  }
  if (isMock) {
    service.defaults.baseURL = config.mockApi;
  }

  // 针对生产环境做特殊处理，不允许使用mock
  if (config.env == "production") {
    service.defaults.baseURL = config.baseApi;
  }
  return service(options);
}
export default request;
